﻿using System.Web;
using Negocio = PSE.Tools.CadastroMensagens.Negocio;
using PSE.Tools.Util.Entidades;
using System;
using System.Collections.Generic;

namespace PSE.Tools.CadastroMensagens.Apresentacao
{
    public class TiposMensagem
    {
        private IApresentacao _apresentacao;
        private Negocio.TiposMensagens _negocioTiposMensagem;
        public TiposMensagem(IApresentacao apresentacao, Negocio.TiposMensagens negocioTiposMensagem)
        {
            _apresentacao = apresentacao;
            _negocioTiposMensagem = negocioTiposMensagem;
        }

        public Entidades.TipoMensagem Obter(int id)
        {
            try
            {
                return _negocioTiposMensagem.ObterPorId(id);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public IList<Entidades.TipoMensagem> Lista()
        {
            try
            {
                return _negocioTiposMensagem.Selecionar();
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public bool Inserir(Entidades.TipoMensagem TiposMensagem)
        {
            bool retorno = true;
            try
            {
                _negocioTiposMensagem.Inserir(TiposMensagem);
                _apresentacao.EnviarMensagem("Tipo de Mensagem Inserida com Sucesso");
            }
            catch (ValidacaoEntidadeException ex)
            {
                retorno = false;
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                retorno = false;
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Atualizar(Entidades.TipoMensagem TiposMensagem)
        {
            bool retorno = true;
            try
            {
                _negocioTiposMensagem.Atualizar(TiposMensagem);
                _apresentacao.EnviarMensagem("Tipo de Mensagem Atualizada com Sucesso");
            }
            catch (ValidacaoEntidadeException ex)
            {
                retorno = false;
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                retorno = false;
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Excluir(Entidades.TipoMensagem TiposMensagem)
        {
            bool retorno = true;
            try
            {
                _negocioTiposMensagem.Excluir(TiposMensagem);
                _apresentacao.EnviarMensagem("Tipo de Mensagem Excluída com Sucesso");
            }
            catch (ValidacaoEntidadeException ex)
            {
                retorno = false;
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                retorno = false;
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }
    }
}
